package Test;

import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.Test;

import Solucion.BrothersInArms;
import Solucion.Panagrama;

public class testBrothersInArms {

	@Test
	public void testBrothersInArms_PartidaOk() {
		//Inicializacion
		String configuracion = "2221";
		ArrayList matriz = new ArrayList();
		matriz.add("00");
		matriz.add("01");
		
		String actual	= "";
		String expected	= "0110";
		
		BrothersInArms b = new BrothersInArms(configuracion);
				
		//Estimulo
		b.armarPartida(matriz);
		b.jugar();
		actual = b.getResultado().get(0).toString()+b.getResultado().get(1).toString();
				
		//Verificacion
		assertEquals(expected, actual);
		assertEquals(false, b.hayErrores());
		
	}
	
	@Test
	public void testBrothersInArms_ConfiguracionFallida() {
		//Inicializacion
		String configuracion = "0221";
		ArrayList matriz = new ArrayList();
		matriz.add("00");
		matriz.add("01");
		
		boolean actual;
		boolean expected = true;
		
		BrothersInArms b = new BrothersInArms(configuracion);
				
		//Estimulo
		b.armarPartida(matriz);
		b.jugar();
		actual = b.hayErrores();
				
		//Verificacion
		assertEquals(expected, actual);		
	}
	
	@Test
	public void testBrothersInArms_MatrizGrandeDosBatallas() {
		//Inicializacion
		String configuracion = "2992";
		ArrayList matriz = new ArrayList();
		matriz.add("100000000");
		matriz.add("000000000");
		matriz.add("000000000");
		matriz.add("000000000");
		matriz.add("000000000");
		matriz.add("000000000");
		matriz.add("000000000");
		matriz.add("000000000");
		matriz.add("000000000");		
		
		
		String actual	= "";
		String expected	= "101000000010000000100000000000000000000000000000000000000000000000000000000000000";
						   
		BrothersInArms b = new BrothersInArms(configuracion);
				
		//Estimulo
		b.armarPartida(matriz);
		b.jugar();
		ArrayList lala = b.getResultado();
		
		actual = b.getResultado().get(0).toString()+b.getResultado().get(1).toString()+b.getResultado().get(2).toString()+
				 b.getResultado().get(3).toString()+b.getResultado().get(4).toString()+b.getResultado().get(5).toString()+
				 b.getResultado().get(6).toString()+b.getResultado().get(7).toString()+b.getResultado().get(8).toString();
				
		//Verificacion
		assertEquals(expected, actual);
		assertEquals(false, b.hayErrores());		
	}
	
	@Test
	public void testBrothersInArms_FaltanDatosParaArmarMatriz() {
		//Inicializacion
		String configuracion = "0321";
		ArrayList matriz = new ArrayList();
		matriz.add("00");
		matriz.add("01");
		
		boolean actual;
		boolean expected = true;
		
		BrothersInArms b = new BrothersInArms(configuracion);
				
		//Estimulo
		b.armarPartida(matriz);
		b.jugar();
		actual = b.hayErrores();
				
		//Verificacion
		assertEquals(expected, actual);		
	}

}
